package enums

import (
	"fmt"
	"time"
)

const (
	OneDay     uint8 = iota + 1 // 1天
	SevenDays                   // 7天
	ThirtyDays                  // 30天
	Perpetual                   // 永久
)

// 将oneDay定义为秒数
var (
	oneDay              = 24 * int64(time.Hour.Seconds()) // 86400秒
	PerpetualExpiration = int64(-1)                       // 永久有效标记
)

var timeDay = map[uint8]int64{
	OneDay:     oneDay,
	SevenDays:  7 * oneDay,
	ThirtyDays: 30 * oneDay,
}

// CalculateExpirationTime 计算过期时间
func CalculateExpirationTime(validType uint8) (int64, error) {
	switch validType {
	case Perpetual:
		return PerpetualExpiration, nil
	default:
		td, ok := timeDay[validType]
		if !ok {
			return 0, fmt.Errorf("invalid shareExpirationTime type %d", validType)
		}
		// 直接使用 Unix 时间戳加法
		return time.Now().Unix() + td, nil
	}
}

// IsExpired 判断是否过期
func IsExpired(expirationTime int64) bool {
	if expirationTime == PerpetualExpiration {
		return false
	}
	expiration := time.Unix(expirationTime, 0)
	return time.Now().After(expiration)
}
